草庐IT

c++ - gcc 和 libstdc++ 向前兼容

全部标签

c++ - 这是 GCC 中的错误吗?

编辑:这不是错误,只是我不知道dependentnamelookupsintemplatedbaseclasses(MSVC“有帮助地”解决而没有错误)。我不久前写了一个仿函数实现,以及一个使用它的简单“事件”包装器。它在MSVC下编译得很好,但是GCC给出了一个关于基类中的成员变量的错误,subscribers,没有被声明;将subscribers更改为this->subscribers解决了问题(!)。它似乎只发生在奇怪的重复模板模式和部分模板特化的情况下。简化的源代码(抱歉使用了令人费解的模板...):#includetemplatestructEventBase{protect

c++ - -static-libstdc++ 适用于 g++ 但不适用于纯 gcc?

作为引用,我使用的是MinGW(GCC5.3)。使用编译文件时g++file.cc-static-libstdc++它静态链接C++标准库(libstdc++)并生成1.9MB的可执行文件。无论如何运行gcc-lstdc++-static-libstdc++file.cc它仍然动态链接到libstdc++-6.dll并生成一个34KB的可执行文件。为什么-static-libstdc++仅适用于g++而不适用于纯gcc? 最佳答案 GCCmanual,LinkOptions说:-static-libstdc++Whentheg++p

c++ - 最新版gcc使用libstdc++.so.5

仍然使用libstdc++.so.5(而不是libstdc++.so.6)的最新版本的gcc是什么? 最佳答案 在GnuABIpolicy,你可以找到这个:...gcc-3.3.3:libstdc++.so.5.0.5gcc-3.4.0:libstdc++.so.6.0.0(与之前不兼容)...因此,除非他们没有列出版本,否则gcc-3.3.3就是您想要的版本。 关于c++-最新版gcc使用libstdc++.so.5,我们在StackOverflow上找到一个类似的问题:

c++ - 如何使用 _mm_extract_ps SSE GCC instrinc 函数将十六进制 float 转换为 C/C++ 中的 float

我正在为二维卷积编写SSE代码,但SSE文档非常稀少。我正在使用_mm_dp_ps计算点积并使用_mm_extract_ps获得点积结果,但是_mm_extract_ps返回一个十六进制float,我不知道如何将这个十六进制float转换为常规float。我可以使用__builtin_ia32_vec_ext_v4sf返回一个float但我想保持与其他编译器的兼容性。_mm_extract_ps(__m128__X,constint__N){union{inti;floatf;}__tmp;__tmp.f=__builtin_ia32_vec_ext_v4sf((__v4sf)__X,

c++ - 在 Mac OS 上使用 GCC 为 MS-DOS (DOSBox) 编译 C 程序

我在MacOSX上的SnowLeopard下运行GCC4.2.1。我想用它来编译我15年前写的一些旧的C/C++DOS游戏,这样我就可以在DosBox下运行它们了。.要做到这一点,它们显然需要以DOS可执行格式编译,谁能告诉我如何使用GCC执行此操作?谢谢! 最佳答案 DOSBox在仿真下运行16位x86实模式代码。OSX10.6上的常规GCC编译器针对OSX操作系统和32位x86保护模式,因此您不能使用它来构建在DOSBox中运行的代码。您可以做的是在DOSBox本身中运行DOS编译器。DJGPP是GCC的MS-DOS端口,但是它

龙芯loongarch64服务器编译安装gcc-8.3.0

前言    当前电脑的gcc版本为8.3.0,但是在编译其他依赖包的时候,出现各种奇怪的问题,会莫名其妙的中断编译。本地文章讲解如何自编译安装gcc,替换系统自带的gcc。环境准备下载页面:龙芯开源社区网站 -LoongArchGCC8.3交叉工具链-源码下载源码包名称如:loongson-gnu-toolchain-8.3-src-loongarch64-linux-gnu-rc1.2.tar开始编译1、解压压缩包tar-xvfloongson-gnu-toolchain-8.3-src-loongarch64-linux-gnu-rc1.2.tar目录结构:2、编译binutilstar-

c++ - GCC 的 _Pragma 运算符中的预处理器标记粘贴

我正在尝试做类似于anotherquestion的事情,即有条件地在我的程序中包含OpenMP编译指示。但是,我想更进一步,避免用户每次使用pragma时都需要指定omp。换句话说,我希望编译以下代码:#include#include#ifdef_OPENMP#defineLIB_PRAGMA_OMP(x)_Pragma("omp"#x)#else#defineLIB_PRAGMA_OMP(x)#endifintmain(){LIB_PRAGMA_OMP(parallel){std::printf("Hellofromthread%d\n",omp_get_thread_num());

c++ - C++ AMP 能否在没有兼容 GPU 的机器上运行?

我了解C++AMP由支持DirectX11的GPU加速。但是,我的问题是,如果编译的C++AMP程序在没有DirectX11兼容GPU的机器上运行,会发生什么?它是否被DirectCompute的某些软件实现所模拟?它是否在CPU上执行(可能使用SSE风格的指令)?或者,它只是无法执行吗? 最佳答案 事实上,C++AMP有一个称为WARP(又名“MicrosoftBasicRenderDriver”)的CPU回退(多核加SSE)实现:http://www.danielmoth.com/Blog/Running-C-AMP-Kerne

c++ - 跨翻译单元和 gcc 4.6 自动内联函数

如果我不将函数f声明为内联。如下:嗯:Xf(Yy);A.cpp:Xf(Yy){...}然后在不同的翻译单元中:B.cpp:#include"A.h"Zg(Ww){......f(...)......}然后我用gcc4.6编译A.o和B.o这两个翻译单元,然后也通过gcc链接它们。(也许对两个步骤都使用-O3)gcc会考虑在链接时内联函数以提高性能吗?还是为时已晚?在一次代码审查中,有人建议我不应该将我的函数声明为内联,因为编译器比我更了解何时内联。我一直觉得除非函数在header中定义,否则编译器没有内联它的选项。(如果C模式、C++模式或gnu++0x模式的答案不同,请同时指出)

【兼容认证】白鲸开源与银河麒麟高级服务器操作系统成功通过测试

2024年1月2日,北京白鲸开源科技有限公司(以下简称"白鲸开源")荣幸宣布,白鲸开源旗下产品WhaleStudioV2.4已成功通过与麒麟软件有限公司旗下的银河麒麟高级服务器操作系统产品的兼容性测试。麒麟软件有限公司的银河麒麟高级服务器操作系统(飞腾版)V10和银河麒麟高级服务器操作系统(鲲鹏版)V10也已通过测试。这一兼容认证确保了产品在性能、可靠性以及通用兼容性方面满足用户的关键性应用需求。WhaleStudioV2.4WhaleStudioV2.4是白鲸开源自主研发的数据开发产品。它为企业提供了强大的任务调度、数据同步、任务血缘等功能,使数据开发工作更加高效。WhaleStudioV2